home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-08-10 | 14.0 KB | 457 lines | [TEXT/MPS ] |
- (*
- File: MoviesFormat.mod
-
- Contains: QuickTime Interfaces.
-
- Version: Technology: QuickTime 2.0
- Package: Universal Interfaces 2.0 in “MPW Latest” on ETO #17
-
- Copyright: © 1984-1995 by Apple Computer, Inc.
- All rights reserved.
-
- Bugs?: If you find a problem with this file, use the Apple Bug Reporter
- stack. Include the file and version information (from above)
- in the problem description and send to:
- Internet: apple.bugs.applelink.apple.com
- AppleLink: APPLE.BUGS
-
- *)
-
- (*$TAGS-*)
- (*$CALLING PASCAL*)
- MODULE MoviesFormat;
-
- IMPORT SYSTEM, Types, ImageCompression, Movies;
-
- (* $PUSH*)
- (* $ALIGN MAC68K*)
- (* $LibExport+*)
-
- CONST
- kMovieVersion* = 0; (* version number of the format here described *)
-
-
- TYPE
- MoviesUserData* = RECORD
- size*: LONGINT; (* size of this user data *)
- udType*: LONGINT; (* type of user data *)
- data*: (*ΔΔPACKEDΔΔ*) ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF CHAR; (* the user data *)
- END;
-
- UserDataAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT;
- userData*: ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF MoviesUserData;
- END;
-
- (* MoviesDataDescription tells us where the data for the movie or track lives.
- The data can follow the directory, be in the datafork of the same file as the directory resource,
- be in the resource fork of the same file as the directory resource, be in another file in the
- data fork or resource fork, or require a specific bottleneck to fetch the data. *)
- (****************************************
- *
- * MediaDirectory information -
- * The MediaDirectory is tightly coupled to the data.
- *
- ****************************************)
- SampleDescriptionAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT; (** = LONG("stsd") *)
- flags*: LONGINT; (* 1 byte of version / 3 bytes of flags *)
- numEntries*: LONGINT;
- sampleDescTable*: ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF Movies.SampleDescription;
- END;
-
- (* TimeToSampleNum maps physical sample time to physical sample number. *)
- TimeToSampleNum* = RECORD
- sampleCount*: LONGINT;
- sampleDuration*: Movies.TimeValue;
- END;
-
- TimeToSampleNumAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT; (** = LONG("stts") *)
- flags*: LONGINT; (* 1 byte of version / 3 bytes of flags *)
- numEntries*: LONGINT;
- timeToSampleNumTable*: ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF TimeToSampleNum;
- END;
-
- (* SyncSamples is a list of the physical samples which are self contained. *)
- SyncSampleAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT; (** = LONG("stss") *)
- flags*: LONGINT; (* 1 byte of version / 3 bytes of flags *)
- numEntries*: LONGINT;
- syncSampleTable*: ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF LONGINT;
- END;
-
- (* SampleToChunk maps physical sample number to chunk number. *)
- (* same as SampleToChunk, but redundant first sample is removed *)
- SampleToChunk* = RECORD
- firstChunk*: LONGINT;
- samplesPerChunk*: LONGINT;
- sampleDescriptionID*: LONGINT;
- END;
-
- SampleToChunkAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT; (** = LONG("stsc") *)
- flags*: LONGINT; (* 1 byte of version / 3 bytes of flags *)
- numEntries*: LONGINT;
- sampleToChunkTable*: ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF SampleToChunk;
- END;
-
- ChunkOffsetAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT; (** = LONG("stco") *)
- flags*: LONGINT; (* 1 byte of version / 3 bytes of flags *)
- numEntries*: LONGINT;
- chunkOffsetTable*: ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF LONGINT;
- END;
-
- SampleSizeAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT; (** = LONG("stsz") *)
- flags*: LONGINT; (* 1 byte of version / 3 bytes of flags *)
- sampleSize*: LONGINT;
- numEntries*: LONGINT;
- sampleSizeTable*: ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF LONGINT;
- END;
-
- ShadowSync* = RECORD
- fdSampleNum*: LONGINT;
- syncSampleNum*: LONGINT;
- END;
-
- ShadowSyncAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT; (** = LONG("stsz") *)
- flags*: LONGINT; (* 1 byte of version / 3 bytes of flags *)
- numEntries*: LONGINT;
- shadowSyncTable*: ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF ShadowSync;
- END;
-
- SampleTableAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT; (** = LONG("stbl") *)
- sampleDescription*: SampleDescriptionAtom;
- timeToSampleNum*: TimeToSampleNumAtom;
- sampleToChunk*: SampleToChunkAtom;
- syncSample*: SyncSampleAtom;
- sampleSize*: SampleSizeAtom;
- chunkOffset*: ChunkOffsetAtom;
- shadowSync*: ShadowSyncAtom;
- END;
-
- PublicHandlerInfo* = RECORD
- flags*: LONGINT; (* 1 byte of version / 3 bytes of flags *)
- componentType*: LONGINT;
- componentSubType*: LONGINT;
- componentManufacturer*: LONGINT;
- componentFlags*: LONGINT;
- componentFlagsMask*: LONGINT;
- componentName*: (*ΔΔPACKEDΔΔ*) ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF CHAR;
- END;
-
- HandlerAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT; (** = LONG("hdlr") *)
- hInfo*: PublicHandlerInfo;
- END;
-
- (* a data reference is a private structure *)
- DataRefAtom* = LONGINT;
-
- DataInfoAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT; (** = LONG("dinf") *)
- dataRef*: DataRefAtom;
- END;
-
- RgnAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT;
- rgnSize*: INTEGER;
- rgnBBox*: Types.Rect;
- data*: (*ΔΔPACKEDΔΔ*) ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF CHAR;
- END;
-
- MatteCompressedAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT;
- flags*: LONGINT; (* 1 byte of version / 3 bytes of flags *)
- matteImageDescription*: ImageCompression.ImageDescription;
- matteData*: (*ΔΔPACKEDΔΔ*) ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF CHAR;
- END;
-
- MatteAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT;
- aCompressedMatte*: MatteCompressedAtom;
- END;
-
- ClippingAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT;
- aRgnClip*: RgnAtom;
- END;
-
- (***********************
- * Movies.Media Info Example Structures
- ***********************)
- VideoMediaInfoHeader* = RECORD
- flags*: LONGINT; (* 1 byte of version / 3 bytes of flags *)
- graphicsMode*: INTEGER; (* for QD - transfer mode *)
- opColorRed*: INTEGER; (* opcolor for transfer mode *)
- opColorGreen*: INTEGER;
- opColorBlue*: INTEGER;
- END;
-
- VideoMediaInfoHeaderAtom* = RECORD
- size*: LONGINT; (* size of Movies.Media info *)
- atomType*: LONGINT; (** = LONG("vmhd") *)
- vmiHeader*: VideoMediaInfoHeader;
- END;
-
- VideoMediaInfo* = RECORD
- size*: LONGINT; (* size of Movies.Media info *)
- atomType*: LONGINT; (** = LONG("minf") *)
- header*: VideoMediaInfoHeaderAtom;
- dataHandler*: HandlerAtom;
- dataInfo*: DataInfoAtom;
- sampleTable*: SampleTableAtom;
- END;
-
- SoundMediaInfoHeader* = RECORD
- flags*: LONGINT; (* 1 byte of version / 3 bytes of flags *)
- balance*: INTEGER;
- rsrvd*: INTEGER;
- END;
-
- SoundMediaInfoHeaderAtom* = RECORD
- size*: LONGINT; (* size of Movies.Media info *)
- atomType*: LONGINT; (** = LONG("vmhd") *)
- smiHeader*: SoundMediaInfoHeader;
- END;
-
- SoundMediaInfo* = RECORD
- size*: LONGINT; (* size of Movies.Media info *)
- atomType*: LONGINT; (** = LONG("minf") *)
- header*: SoundMediaInfoHeaderAtom;
- dataHandler*: HandlerAtom;
- dataReference*: DataRefAtom;
- sampleTable*: SampleTableAtom;
- END;
-
- (* whatever data the media handler needs goes after the atomType *)
- MediaInfo* = RECORD
- size*: LONGINT;
- atomType*: LONGINT;
- END;
-
- (***********************
- * Movies.Media Directory Structures
- ***********************)
- MediaHeader* = RECORD
- flags*: LONGINT; (* 1 byte of version / 3 bytes of flags *)
- creationTime*: LONGINT; (* seconds since Jan 1904 when directory was created *)
- modificationTime*: LONGINT; (* seconds since Jan 1904 when directory was appended *)
- timeScale*: Movies.TimeValue; (* start time for Movies.Media (Movies.Media time) *)
- duration*: Movies.TimeValue; (* length of Movies.Media (Movies.Media time) *)
- language*: INTEGER;
- quality*: INTEGER;
- END;
-
- MediaHeaderAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT;
- header*: MediaHeader;
- END;
-
- MediaDirectory* = RECORD
- size*: LONGINT;
- atomType*: LONGINT; (** = LONG("mdia") *)
- mediaHeader*: MediaHeaderAtom; (* standard Movies.Media information *)
- mediaHandler*: HandlerAtom;
- mediaInfo*: MediaInfo;
- END;
-
- (***********************
- * Movies.Track Structures
- ***********************)
-
- CONST
- TrackEnable* = ASH(1,0);
- TrackInMovie* = ASH(1,1);
- TrackInPreview* = ASH(1,2);
- TrackInPoster* = ASH(1,3);
-
-
- TYPE
- TrackHeader* = RECORD
- flags*: LONGINT; (* 1 byte of version / 3 bytes of flags *)
- creationTime*: LONGINT; (* seconds since Jan 1904 when directory was created *)
- modificationTime*: LONGINT; (* seconds since Jan 1904 when directory was appended *)
- trackID*: LONGINT;
- reserved1*: LONGINT;
- duration*: Movies.TimeValue; (* length of track (track time) *)
- reserved2*: LONGINT;
- reserved3*: LONGINT;
- layer*: INTEGER;
- alternateGroup*: INTEGER;
- volume*: INTEGER;
- reserved4*: INTEGER;
- matrix*: ImageCompression.MatrixRecord;
- trackWidth*: Types.Fixed;
- trackHeight*: Types.Fixed;
- END;
-
- TrackHeaderAtom* = RECORD
- size*: LONGINT; (* size of track header *)
- atomType*: LONGINT; (** = LONG("tkhd") *)
- header*: TrackHeader;
- END;
-
- EditListType* = RECORD
- trackDuration*: Movies.TimeValue;
- mediaTime*: Movies.TimeValue;
- mediaRate*: Types.Fixed;
- END;
-
- EditListAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT; (** = elst *)
- flags*: LONGINT; (* 1 byte of version / 3 bytes of flags *)
- numEntries*: LONGINT;
- editListTable*: ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF EditListType;
- END;
-
- EditsAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT; (** = edts *)
- editList*: EditListAtom;
- END;
-
- TrackLoadSettings* = RECORD
- preloadStartTime*: Movies.TimeValue;
- preloadDuration*: Movies.TimeValue;
- preloadFlags*: LONGINT;
- defaultHints*: LONGINT;
- END;
-
- TrackLoadSettingsAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT; (** = load *)
- settings*: TrackLoadSettings;
- END;
-
- TrackDirectory* = RECORD
- size*: LONGINT;
- atomType*: LONGINT; (** = LONG("trak") *)
- trackHeader*: TrackHeaderAtom; (* standard track information *)
- trackClip*: ClippingAtom;
- edits*: EditsAtom;
- media*: MediaDirectory;
- userData*: UserDataAtom; (* space for extending with new data types *)
- END;
-
- (****************************************
- *
- * MovieDirectory -
- * The MovieDirectory is the top level structure which
- * holds the TrackInstance describing where the
- * TrackDirectories are.
- *
- ****************************************)
- MovieHeader* = RECORD
- flags*: LONGINT; (* 1 byte of version / 3 bytes of flags *)
- creationTime*: LONGINT; (* seconds since Jan 1904 when directory was created *)
- modificationTime*: LONGINT; (* seconds since Jan 1904 when directory was appended *)
- timeScale*: Movies.TimeValue; (* Sound.Time specifications *)
- duration*: Movies.TimeValue;
- preferredRate*: Types.Fixed; (* rate at which to play this movie *)
- preferredVolume*: INTEGER; (* volume to play movie at *)
- reserved1*: INTEGER;
- preferredLong1*: LONGINT;
- preferredLong2*: LONGINT;
- matrix*: ImageCompression.MatrixRecord;
- previewTime*: Movies.TimeValue; (* time in track the proxy begins (track time) *)
- previewDuration*: Movies.TimeValue; (* how long the proxy lasts (track time) *)
- posterTime*: Movies.TimeValue; (* time in track the proxy begins (track time) *)
- selectionTime*: Movies.TimeValue; (* time in track the proxy begins (track time) *)
- selectionDuration*: Movies.TimeValue; (* time in track the proxy begins (track time) *)
- currentTime*: Movies.TimeValue; (* time in track the proxy begins (track time) *)
- nextTrackID*: LONGINT; (* next value to use for a TrackID *)
- END;
-
- MovieHeaderAtom* = RECORD
- size*: LONGINT;
- atomType*: LONGINT; (** = LONG("mvhd") *)
- header*: MovieHeader;
- END;
-
- MovieDirectory* = RECORD
- size*: LONGINT;
- atomType*: LONGINT; (** = LONG("moov") *)
- header*: MovieHeaderAtom;
- movieClip*: ClippingAtom;
- (* Movies.Track Directories *)
- track*: RECORD
- trackDirectory*: TrackDirectory; (* Movies.Track directory information *)
- END;
-
-
- (* User data for Movies.Movie *)
- userData*: UserDataAtom; (* space for user extensions *)
- END;
-
-
- CONST
- (* some system defined format IDs *)
- MOVIE_TYPE* = LONG("moov");
- TRACK_TYPE* = LONG("trak");
- MEDIA_TYPE* = LONG("mdia");
- VIDEO_TYPE* = LONG("vide");
- SOUND_TYPE* = LONG("soun");
-
- (* atom id's *)
- MovieAID* = LONG("moov");
- MovieHeaderAID* = LONG("mvhd");
- ClipAID* = LONG("clip");
- RgnClipAID* = LONG("crgn");
- MatteAID* = LONG("matt");
- MatteCompAID* = LONG("kmat");
- TrackAID* = LONG("trak");
- UserDataAID* = LONG("udta");
- TrackHeaderAID* = LONG("tkhd");
- EditsAID* = LONG("edts");
- EditListAID* = LONG("elst");
- MediaAID* = LONG("mdia");
- MediaHeaderAID* = LONG("mdhd");
- MediaInfoAID* = LONG("minf");
- VideoMediaInfoHeaderAID* = LONG("vmhd");
- SoundMediaInfoHeaderAID* = LONG("smhd");
- GenericMediaInfoHeaderAID* = LONG("gmhd");
- GenericMediaInfoAID* = LONG("gmin");
- DataInfoAID* = LONG("dinf");
- DataRefAID* = LONG("dref");
- SampleTableAID* = LONG("stbl");
- STSampleDescAID* = LONG("stsd");
- STTimeToSampAID* = LONG("stts");
- STSyncSampleAID* = LONG("stss");
- STSampleToChunkAID* = LONG("stsc");
- STShadowSyncAID* = LONG("stsh");
- HandlerAID* = LONG("hdlr");
- STSampleSizeAID* = LONG("stsz");
- STChunkOffsetAID* = LONG("stco");
- DataRefContainerAID* = LONG("drfc");
- TrackReferenceAID* = LONG("tref");
- ColorTableAID* = LONG("ctab");
- LoadSettingsAID* = LONG("load");
-
-
- (* $ALIGN RESET*)
- (* $POP*)
-
- END MoviesFormat.
-